﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace NGCDS
{
    public class Matcher
    {
        private string format;
        private int syncDay;
        private List<Regex> regexs = new List<Regex>();

        public Matcher(string format, int syncDay)
        {
            this.format = format;
            this.syncDay = syncDay;
            initRegexs();
        }

        private void initRegexs()
        {
            for (int i = syncDay; i > 0; i--)
            {
                DateTime day = DateTime.Now.AddDays(-i + 1);

                // 注意：
                // 定義轉換，config # 為任意字元，轉成 regex 則為 .
                string pattern = format.Replace("#", ".");

                // 注意： (支援民國年) TWN. ERA. = A.C. - 1911 
                // 定義轉換，config (注意大小寫)
                // 民國年用  yyy 表示  099
                // 西元年用 YYYY 表示 2010 
                if (pattern.Contains("y"))
                {
                    day = day.AddYears(-1911);
                }

                // 注意格式 24:yyyyMMdd_HHmmss 12:yyyyMMdd_hhmmss
                pattern = pattern.ToLower().Replace("m", "M");
                regexs.Add(new Regex(day.ToString(pattern)));
            }
        }


        public bool isMatch(string fileName)
        {
            foreach (Regex regex in regexs)
            {
                if (regex.IsMatch(fileName))
                {
                    return true;
                }
            }
            return false;
        }
    }
}
